<?php

class LoginController extends Controller {
    /**
     * @final   pacote das views deste controller
     */
    const PACKAGE_VIEW = 'login';
    /**
     * @var LoginService
     */
    private $loginService;
    /**
     * __construct
     * Inicializa todos os servicos usuados por LoginController
     */
    public function __construct() {
        $this->loginService = LoginService::getInstance();
    }

    /**
     * @method  getLoginView
     *
     * Inclui a view de login no documento
     *
     * @since   Setembro de 2011
     */
    private function getLoginView() {
        require_once DRA_PACKAGE_VIEW_PATH . self::PACKAGE_VIEW. '/login.view.phtml';
    }

    public function showIndex() {
        $this->getLoginView();
    }

    /**
     * @method  logar
     *
     * Realiza o login de um usuario, salva um objeto de erro ou sucesso.
     *
     * @since   Setembro de 2011
     */
    public function logar() {
        $ArDados = $_POST;

        if( !$this->hasReturn() ) {
            multipleEntities($ArDados);
            $BoCanLogged = $this->loginService->logar($ArDados);
            Dracosys::$tSession->commit();
            $StMessage = $BoCanLogged ? 'Logado com Sucesso.' : 'Usuario ou Senha incorretos.';
            $ItCode = $BoCanLogged ? 1 : 0;
            $this->saveReturn($StMessage, $ItCode);
        }

        $this->showJsonResponse();
    }

    /**
     * @method  logout
     *
     * Deloga e envia o usuario para pagina de login
     *
     * @since   Dezembro de 2011
     * @author  Richard Brandao <richardsbrandao@gmail.com>
     */
    public function logout() {
        session_destroy();
        redirect('login');
    }

}

?>
